package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCSalesCommissionYearConfig;
import com.shrct.businessprocess.project.RCTeamMemberAssignment;
import com.shrct.businessprocess.project.impl.RCSalesTeamImpl;
import com.shrct.businessprocess.project.proxy.RCSalesTeamProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;
import java.util.Collection;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCSalesTeamImpl.class)
public interface RCSalesTeam extends IModelObject, INamedModelObject {
  public abstract RCSalesCommissionYearConfig getConfig();
  
  public abstract RCSalesTeam setConfig(final RCSalesCommissionYearConfig config);
  
  public abstract String getName();
  
  public abstract RCSalesTeam setName(final String name);
  
  public abstract Double getObjectRate();
  
  public abstract RCSalesTeam setObjectRate(final Double objectRate);
  
  public abstract Double getRate();
  
  public abstract RCSalesTeam setRate(final Double rate);
  
  public abstract String getEntityName();
  
  public abstract Collection<RCTeamMemberAssignment> getMembers();
  
  public abstract RCTeamMemberAssignment createAndAddtoMembers();
  
  public abstract RCTeamMemberAssignment createAndAddtoMembers(final Procedure1<RCTeamMemberAssignment> updater);
  
  public abstract RCSalesTeam removeFromMembers(final RCTeamMemberAssignment rCTeamMemberAssignment);
  
  public abstract RCSalesTeam removeAllMembers();
  
  public abstract RCTeamMemberAssignment createMember(final Procedure1<? super RCTeamMemberAssignment> init);
  
  public abstract void deleteMember(final RCTeamMemberAssignment item);
  
  /**
   * 团队毛利润指标实际完成率
   */
  public abstract Double getActualFinishRate();
  
  /**
   * 本年度应得管理奖
   */
  public abstract Double getPrizeAmount();
  
  public abstract Double getPrizeAmountTarget();
  
  public abstract RCSalesTeamProxy toProxy();
}
